One of the first and crucial stages of working with Wialon is setting up sensors in the unit. If the sensors are set up correctly, then some standard algorithms will give more accurate results and you will get access to functionality that has not been available before. The calculation table, a tool from the tab of the same name, is considered in detail in this article since this exact tool most often causes difficulties when setting up sensors.
General principle of sensors operation
Wialon supports many types of trackers; you can find their current number on the wialon.com website in the Hardware section. Each of the trackers "speaks" in its own way. Therefore, the parameters which come from different types of trackers and which are displayed on the Messages tab may contain the same information (for example, about temperature or mileage) but have different names. It is necessary to create sensors for each unit in Wialon to prevent users from noticing the differences when using units with various trackers. Also, sensors have a specific type, which allows the system to understand which algorithm to choose to process input values.
However, a simple selection of a sensor type and specifying a parameter in it is often not enough because the parameter value comes in an unobvious to the user way. For example, temp=125 could mean 125°F, 125°C, 12.5°C, or even -3°C. There are three methods to convert the input parameter to the desired type:
- Expression in the Parameter field;
- Calculation table;
- Validation.
They can be used individually or combined. If you use several methods simultaneously, they will be applied in the exact order they are listed above.
Schematically, the use of sensors can be represented as follows:
- The sensor connected to the tracker measures some physical quantity; let’s denote it by S.
- The sensor converts this value and transmits it to the tracker. The X parameter comes from the tracker to Wialon.
- Based on the parameter, a sensor is created in Wialon. Then, f(X) transformations are applied to the parameter in the sensor to obtain a human-readable Y value.
- Ideally, after transformations in the sensor, the value Y=f(X) should be equal to the value S measured in the first stage. Further, Y will be used in tooltips, reports, notifications, and other Wialon functionality.
Since this article only explains the process of setting up the calculation table in Wialon, we will pay attention only to the following elements from the scheme above:
When to use a calculation table
Usually, the calculation table is used in cases where it is necessary to convert the input parameter. However, all three methods mentioned above serve to do this. In what scenario is it worth choosing the calculation table?
In terms of practical application, the calculation table might be used for:
- the calibration table (for example, for weight sensors or fuel level sensors);
- digital sensors based on analog input data (for example, ignition sensors based on voltage);
- sensors based on codes that describe different states but come in one parameter (for example, device_status=4 means the ignition is on, and device_status=13 means the panic button is pressed, etc.);
- sensors that should display positive and negative values, although the parameter associated with them has only positive values (for example, for temperature sensors);
- any sensors in which it is necessary to separate the range of correct and erroneous values (for example, if the sensor sends specific values in a parameter that indicate errors).
Calculation table settings
The calculation table involves working with the simplest linear functions. That means that the calculation table converts the data in accordance with the Y=a⋅X+b formula — one of the variants of the straight-line equation.
If you understand how each component of this equation works, you can implement valuable and unusual solutions with its help. Next, we will review each area of the Calculation Table tab separately and visualize its impact on the result using a chart.
XY pairs
On the right side, you can see the XY pairs block. Filling it in is not enough for the calculation table to work, but it can simplify its settings.
You can add pairs manually or by importing CSV or TXT files (export is available in CSV only). After filling in all the fields of this block, you must click the Generate button (meaning, generate a calculation table based on XY pairs). This action will lead to the values of X, a, and b calculation in the left part of the window.
Each of the added XY pairs corresponds to a point on the chart. As you know, you can draw a line through two points. Therefore, if you enter five XY pairs, you will get four straight lines on the chart.
X is an input value
The central block of the Calculation Table tab contains rows with X, a, and b values. Each of the rows corresponds to a straight line on the chart. The value of X in each row means the beginning of a new straight line, that is, it sets the interval where new values of a and b will be used.
As an example, consider a table with the following values:
Otherwise, this condition can be written as follows:
- From −∞ to 3 (not including), the equation Y=1⋅X-2 is applied.
- From 3 (including) to 5.5 (not including), the equation Y=0⋅X+3 is applied.
- From 5.5 (including) to +∞, the equation Y=-0.5⋅X+2 is applied.
An example of a chart obtained when filling in the calculation table
a is a slope coefficient of the line
With a=0, the slope will be 0°; thus, the line will be parallel to the X-axis.
With a=1, the slope will be 45°; thus, the larger the coefficient, the closer the line will be to the Y-axis.
With a=-1, the slope will be −45 °; thus, negative values of this coefficient tilt the line down, and positive values — up.
An example of a chart of the Y=a⋅X line with different slope coefficients
b determines the displacement of the line along the Y-axis
When b=0, there is no displacement.
When b>0, the straight line is displaced upward relative to the X-axis.
When b<0, the displacement is downward.
An example of lines with different displacements
Lower and upper bounds
Lower and upper bounds allow you to cut off erroneous sensor values according to a simple principle — if the value is outside the range between the lower and upper bounds, the sensor will display a dash (error).
Let’s consider an example with a fuel level sensor. Assume that parameter values from 3 to 250 correspond to fuel volumes from 0 liters to 100 liters. And the 0 or 255 values of the parameter mean errors that we want to exclude so that they are not interpreted as a realistic volume since the tank in the example cannot have less than 0 or more than 100 liters of fuel. For this example, you can propose a solution with the Apply after calculation option turned off:
There is also a solution with the Apply after calculation option enabled:
From the example, you can see that the Apply after calculation option affects which values the bounds apply to: if it is off, then the system filters out the values along the X-axis (the input values before applying the calculation table), and if it is enabled, then it filters out the values along the Y-axis (sensor values after applying the calculation table).
To visualize how the bounds work, consider another example in which the same bounds applied to the same straight line and the difference lies only in the Apply after calculation option, which significantly affects the result.
The lower bound equals 2, the upper bound equals 3, the Apply after calculation option is disabled
The lower bound equals 2, the upper bound equals 3, the Apply after calculation option is enabled
The principle of the calculation table operation
Sometimes, to understand the essence of a phenomenon, it's better to go backward. If we know the precise formula Y=f(X), which relates the input and output values over the entire range, then there is no need to use the calculation table. It's better to use the expression in the Parameter field instead. Let's consider such a case.
Suppose that an input value is related to an output value by the Y=0.5⋅X2 formula.
Let's take adc3 as a parameter. To describe such a formula in Wialon, insert the following expression into the Parameter field: const0.5*adc3^const2
The chart of the Y=0.5⋅X2 function
But what if we don't know the precise Y=f(X) formula? In this exact case, the calculation table will help us.
Suppose that we know the values of the measured value (it will be Y), and we can check what value the parameter will take in Wialon at those points (it will be X). Thus, you can get values, for example, at four points: (0; 0), (1; 0.5), (2; 2), (3; 4.5). Next, plot these points (X, Y) on the chart and connect them with red lines.
Reproduction of a part of the function Y=0.5⋅X2 by lines built on four points
It is easy to see that the result is close to that obtained by the formula, but there are still differences. In some cases, this accuracy will be sufficient, but if it is not enough, you can measure values at more points. The chart below shows an example for six points: (0; 0), (0.5; 0.125), (1; 0.5), (1.5; 1.125), (2; 2), (3; 4.5).
Reproduction of a part of the function Y=0.5⋅X2 by lines built on six points
Rationale and use cases
In this section, we will consider several cases where the calculation table saves the day.
The curve that describes the relationship between X and Y can be quite complex.
For example, using a fuel level sensor requires calibrating the fuel tank, and the shape of the chart built according to the calibration table will depend on the geometry of the tank, which is never ideal (it may have roundings, dents, internal stiffeners, and so on).
The chart based on the calibration table with small steps between measurements
It is problematic to describe such dependence in one formula. An easier way to describe this curve is to break it down into intervals where it behaves roughly like a straight line and determine the formulas for those lines. You can do it using XY pairs.
Reproduction of a complex curve by breaking it down into lines passing through eleven points
Also, sometimes the relationship between X and Y can vary over several intervals. To describe it, you need to use a system of several expressions, which cannot be done in the Parameter field in the sensor properties.
For example, some temperature sensors work as follows: X values in the range from 0 to 127 correspond to a positive temperature, and in the range from 128 to 255 — to a negative temperature. You will need a calculation table with two rows to handle such a case:
X=0; a=1; b=0
X=128; a=1; b=-256
The temperature chart where higher parameter values correspond to negative temperatures
Digital sensors are another prime example of a situation where the relationship between X and Y varies over several intervals. For example, an ignition sensor can be created based on a voltage parameter, and this requires two conditions taken into account: Y=0 when X<14 and Y=1 when X≥14. As we already know, this cannot be done using an expression in the sensor properties. But on the Calculation Table tab, this will require only two lines:
X=0; a=0; b=0
X=14; a=0; b=1
The ignition status chart depending on voltage